The role of software as a key component in high-tech, electronic products is increasing at a rapid rate. One reason for this increase may be attributed to competition for market share. For instance, companies continuously strive to deliver new products with more features in a quicker turn-around time than their competitors. The use of software within an electronic product makes this possible. By changing the software, a manufacturing company can produce a new product with a new set of features without having to change the hardware and hence, the production line. Overall, this improves the turn-around time in delivering new products.
Music synthesizers are one example of products in which the use of software is becoming more significant. In fact, software synthesizers that can be installed and operated from a single computer equipped with an audio sound card are now available for purchase. In hardware based synthesizers, the volume and pitch of the audio signal can easily be tracked at the sample rate of the audio signal (i.e. 44 KHz). In software based synthesizers, however, tracking the volume and pitch at the sample rate is processor intensive. This is amplified by the requirement of the CPU to monitor key presses, key releases, as well as performing the arbitration between the various processes and components of the synthesizer.
Several technological issues must be addressed in developing a software synthesizer. Many of these issues are complicated by the contradictory requirements of producing quality and consistent musical sounds, while minimizing the amount of processing resources required. These requirements are contradictory because, in general, the very steps required to improve the quality and consistency of the sound result in using more processing time. As a result, typical software synthesizers may be limited in the amount of features provided, the quality of the sound, or the sophistication of the synthesis process. One method to alleviate this problem is by improving the efficiency of the processing unit running the software synthesizer. However, there is also a need to improve the performance of a software synthesizer by decreasing the amount of processing time required to produce quality and consistent sound.
A typical synthesizer produces an audio signal by generating a pitch signal having the desired frequency characteristics and a volume signal for controlling the output volume level. These signals are then input to an amplifier along with a digital audio source. The digital audio source is modulated by the pitch and volume signals to produce the audio signal. In digital electronic based synthesizers, the sound and volume signals are discrete signals rather than continuous. Thus, the pitch and volume of the audio signal are provided to the amplifier in various samples at a sample rate. A typical sample rate for synthesizers is 44 KHz.
The level for the pitch and volume signals at each of the sample points are generated by combining several pieces of information. For instance, the level of the pitch signal at any one sample point can include a combination of one or more of the following input parameters: the note being played, the position of a pitch wheel, the effect of an LFO on the vibrato, the state of a pitch envelope, MIDI pitch bend events, or other similar parameters. Likewise, the level of the volume signal at any one sample point can include a combination of one or more of the following input parameters: the pan setting, the attenuation setting, the effect of an LFO on the tremolo, the volume setting, MIDI expression events, or other similar parameters. Thus, for each sample point, the value for each of the required parameters must be determined and then combined to produce the signals.
In a predominantly hardware based synthesizer, the process of combining the various parameters can easily be accomplished using synchronized adder circuits, shift registers, multipliers, and analog to digital converters where necessary. However, in a predominantly software based synthesizer, this process can be very processor intensive. If the sample rate is too fast, the software synthesizer may not be able to process the information in real time. At a minimum, the software synthesizer must limit the available features due the heavy demand on the processor for simply synthesizing the audio signal. Thus, there is a need for a method to produce an audio signal with a software synthesizer that limits the amount of processing resources required to synthesize the audio signal.
One technique for limiting the amount of processor time required to synthesize an audio signal is to decrease the sample rate. Another technique is to only track the pitch and volume at step points of more than one sample point. Both of these techniques significantly reduce the amount of processing time required, but under certain circumstances the quality and consistency of the audio signal may be compromised. For instance, when the pitch or the volume of the audio signal is changing rapidly, reducing the sample rate or increasing the step size between step points may result in eliminating significant details of the audio signal. In addition, if the pitch or the volume changes a significant amount between sample points, then the audio signal may sound choppy. On the other hand, under certain circumstances, the pitch and the volume of an audio signal change at a relatively low rate. Thus, not only is it processor intensive to track the audio signal at the sample rate, it is also unnecessary in many circumstances.
Therefore, there may be seen a need in the art for a system and method for tracking the pitch and volume of an audio signal that minimizes the processing time, but maintains an accurate track of the actual audio signal.